CloudWatch EventsのターゲットにCodeBuildのプロジェクトを指定できるようになりました
事業開発部の野村です。CloudWatch EventsのターゲットにCodebuildがサポートされたことが発表されました。
Amazon CloudWatch Events now Supports AWS CodeBuild as an Event Target
なので、今回は私が先日「LINE Notifyをnode.jsで利用する」で紹介したプロジェクトをCodeBuild上で動かすように設定し、CloudWatch EventsのScheduleで定期的に実行することを試しましたのでその方法をご紹介させていただきます。
今回は東京リージョン(ap-notheast-1)で作業しております。
CodeBuildプロジェクト作成
概ね以下の通りです↓
- CodeBuildプロジェクト名入力
- 「Source: What to build」では、先日の記事で紹介したGithubのpublicリポジトリを指定しています。(要Github認証)
- buildイメージは「Use an image managed by AWS CodeBuild」から「Ubuntu」「Node.js」「7.0.0」を選択。
- advanced settings内の
Environment variables
で環境変数$LINE_TOKEN
を設定してます。 - 今回Cache設定をあわせて指定してますが、必須ではないです。
- (Cache設定しない場合は、後述の
buildspec.yml
のcacheも不要) - 残りの項目はデフォルトでそのまま指定。
Githubリポジトリのソースにbuildspec.yml追加
version: 0.2 phases: install: commands: - npm install --production build: commands: - node main.js cache: paths: - './node_modules/**/*'
CloudWatch Eventsのrule設定
こちらも概ね以下の通り↓
- EventSourceは、cronで1時間おきに設定
- Targetsでは、「Add Target」ボタン押下後「CodeBuild project」を選択
- CodeBuildのARN名を入力
- ARN名は
arn:aws:codebuild:<リージョン名>:<AWSアカウントID>:project/<CodeBuildプロジェクト名>
- 残りの項目はデフォルトでそのまま指定。
- CloudWatch Eventsのrule名を入力
実行確認
CloudWatch Eventsで設定した時間になったらCodeBuildが動き出します。 CodeBuildの管理コンソールから「Build History」を見ると、結果とログが確認できます。
前回実装したLINE Notifyの結果と同様、LINE上でも無事発言が確認できてます。
まとめ
今回は簡単なnodeアプリケーションを使ってCodeBuildとCloudWatch Eventsの動作確認を実施しました。CodeBuildを利用した定期的なビルドオペレーションの参考になれば幸いです。
それでは。